//#pragma once
//
//#include "DeviceController.h"
//#include "DIJoystick.h"
//#include <map>
//#include <vector>
//#include <type_traits>
//
//class ControllerManager {
//
//public:
//	// I'm probably shooting myself in the foot here
//	template<class DevCont>
//	static void addDeviceController(DevCont&& dc) { // I'm probably shooting myself in the foot here
//		controllers::Joystick* controller = dc.getController();
//		auto pair = mControllers.emplace(controller, std::vector<DeviceController*>()).first;
//		pair->second.push_back(new DevCont(dc));
//	}
//	static void run();
//
//private:
//	static std::map<controllers::Joystick*, std::vector<DeviceController*>> mControllers;
//
//	ControllerManager();
//	virtual ~ControllerManager();
//};